use serde::{Deserialize, Serialize};

/// 快捷方式数据结构
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Shortcut {
    pub name: String,
    pub path: String,
    pub icon: Option<String>,
    /// 文件创建时间（Unix时间戳）
    pub created_time: u64,
}

/// 应用程序设置配置
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AppSettings {
    /// 窗口宽度
    pub window_width: f64,
    /// 窗口高度
    pub window_height: f64,
    /// 显示窗口的快捷键修饰符（保持兼容性，但不在UI中显示）
    #[serde(default = "default_show_modifiers")]
    pub show_shortcut_modifiers: Vec<String>,
    /// 显示窗口的快捷键按键（保持兼容性，但不在UI中显示）
    #[serde(default = "default_show_key")]
    pub show_shortcut_key: String,
    /// 隐藏窗口的快捷键修饰符（保持兼容性，但不在UI中显示）
    #[serde(default = "default_hide_modifiers")]
    pub hide_shortcut_modifiers: Vec<String>,
    /// 隐藏窗口的快捷键按键（保持兼容性，但不在UI中显示）
    #[serde(default = "default_hide_key")]
    pub hide_shortcut_key: String,
    /// 开机自启动
    #[serde(default = "default_auto_start")]
    pub auto_start: bool,
}

/// 默认显示快捷键修饰符
fn default_show_modifiers() -> Vec<String> {
    vec!["Alt".to_string()]
}

/// 默认显示快捷键按键
fn default_show_key() -> String {
    "Space".to_string()
}

/// 默认隐藏快捷键修饰符
fn default_hide_modifiers() -> Vec<String> {
    vec![]
}

/// 默认隐藏快捷键按键
fn default_hide_key() -> String {
    "Escape".to_string()
}

/// 默认自启动设置
fn default_auto_start() -> bool {
    false
}

impl Default for AppSettings {
    fn default() -> Self {
        Self {
            window_width: 800.0,
            window_height: 600.0,
            show_shortcut_modifiers: default_show_modifiers(),
            show_shortcut_key: default_show_key(),
            hide_shortcut_modifiers: default_hide_modifiers(),
            hide_shortcut_key: default_hide_key(),
            auto_start: default_auto_start(),
        }
    }
}